說完了類別,今天要開始往方法(Method)或函數(Function)說起了。
因為語言特性的關係,有些叫method,有些叫function,有些叫procedure,它們可能都有一些差異,但我就不分了,全部都用方法稱呼。
方法的命名的要求很分歧:C#的命名會用PascalCase,因為他是一個公開的介面,在C#裡只要你看得到的東西:方法啊,類別啊,屬性啊,任何只要他的存取修飾子是public,他就會用PascalCase。
而C++, Java, python或Javascript則承襲了C語言,會用camelCase
方法的命名會和主方法main對齊,只要main是大寫就是PascalCase,小寫就是camelCase。
但人生都有例外,像golang,function是PascalCase或是camelCase有不同的意義。所以還是那句話:團隊有共識就好。
既然是方法,方法的名稱就一定是動詞,例如
public void Login();
但有些東西還是要注意
public class User{
public bool UserRegister(UserInfo userInfo);
}
但其實是不必要的,因為當我們在使用類別時,自然就會把他帶出來。(如果物件的命名得宜的話)
User newUser = new User();
newUser.Register(userInfo);
所以不需要把類別名稱前綴在方法裡。
2. 不要同一個動作有太多種不同的字
如果取資料己經是用get,那就應該全部都用get,不要突然用fetch或retrieve。這在前面己經有說過了就不再描述。
3. 不要用一個字形容不同的動作
如果get是指抓資料,那就應該不能用來描述其他動作(例如得到獎勵)。這在前面己經有說過了就不再描述。
4. 注意詞性
大部份的方法,使用的都是現在式,而且是以方法本身描述的現在式。但如果去看SDK的話,有很少數的情況會用到特別的時態,例如檢查檔案或目錄是否存在的方法是
File.exists(); //Java, Python
//or
File.IsExists(); //C#
其實不難理解啦!對物件本身來說,檔案系統是第三者,所以會在方法加s。
有其他團隊是用不同的命名規則嗎?像VB不分大小寫這種?能分享一下你們的經驗嗎?